﻿using System.Collections.Generic;

namespace com.binance.client.model.enums
{
	 


	/// <summary>
	/// withdraw, deposit.
	/// </summary>
	public sealed class WithdrawState
	{


	  public static readonly WithdrawState SUBMITTED = new WithdrawState("SUBMITTED", InnerEnum.SUBMITTED, "submitted");
	  public static readonly WithdrawState REEXAMINE = new WithdrawState("REEXAMINE", InnerEnum.REEXAMINE, "reexamine");
	  public static readonly WithdrawState CANCELED = new WithdrawState("CANCELED", InnerEnum.CANCELED, "canceled");
	  public static readonly WithdrawState PASS = new WithdrawState("PASS", InnerEnum.PASS, "pass");
	  public static readonly WithdrawState REJECT = new WithdrawState("REJECT", InnerEnum.REJECT, "reject");
	  public static readonly WithdrawState PRETRANSFER = new WithdrawState("PRETRANSFER", InnerEnum.PRETRANSFER, "pre-transfer");
	  public static readonly WithdrawState WALLETTRANSFER = new WithdrawState("WALLETTRANSFER", InnerEnum.WALLETTRANSFER, "wallet-transfer");
	  public static readonly WithdrawState WALEETREJECT = new WithdrawState("WALEETREJECT", InnerEnum.WALEETREJECT, "wallet-reject");
	  public static readonly WithdrawState CONFIRMED = new WithdrawState("CONFIRMED", InnerEnum.CONFIRMED, "confirmed");
	  public static readonly WithdrawState CONFIRMERROR = new WithdrawState("CONFIRMERROR", InnerEnum.CONFIRMERROR, "confirm-error");
	  public static readonly WithdrawState REPEALED = new WithdrawState("REPEALED", InnerEnum.REPEALED, "repealed");

	  private static readonly IList<WithdrawState> valueList = new List<WithdrawState>();

	  static WithdrawState()
	  {
		  valueList.Add(SUBMITTED);
		  valueList.Add(REEXAMINE);
		  valueList.Add(CANCELED);
		  valueList.Add(PASS);
		  valueList.Add(REJECT);
		  valueList.Add(PRETRANSFER);
		  valueList.Add(WALLETTRANSFER);
		  valueList.Add(WALEETREJECT);
		  valueList.Add(CONFIRMED);
		  valueList.Add(CONFIRMERROR);
		  valueList.Add(REPEALED);
	  }

	  public enum InnerEnum
	  {
		  SUBMITTED,
		  REEXAMINE,
		  CANCELED,
		  PASS,
		  REJECT,
		  PRETRANSFER,
		  WALLETTRANSFER,
		  WALEETREJECT,
		  CONFIRMED,
		  CONFIRMERROR,
		  REPEALED
	  }

	  public readonly InnerEnum innerEnumValue;
	  private readonly string nameValue;
	  private readonly int ordinalValue;
	  private static int nextOrdinal = 0;


	  private readonly string code;

	  internal WithdrawState(string name, InnerEnum innerEnum, string code)
	  {
		this.code = code;

		  nameValue = name;
		  ordinalValue = nextOrdinal++;
		  innerEnumValue = innerEnum;
	  }

	  public override string ToString()
	  {
		return code;
	  }

//JAVA TO C# CONVERTER NOTE: Fields cannot have the same name as methods:EnumLookup


		public static IList<WithdrawState> values()
		{
			return valueList;
		}

		public int ordinal()
		{
			return ordinalValue;
		}

		public static WithdrawState valueOf(string name)
		{
			foreach (WithdrawState enumInstance in WithdrawState.valueList)
			{
				if (enumInstance.nameValue == name)
				{
					return enumInstance;
				}
			}
			throw new System.ArgumentException(name);
		}
	}

}